﻿<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!--

    Webpage by Matthew Fisher

-->
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<title>Matt's Webcorner - Publications</title>
<meta name="keywords" content="Matthew Fisher, Publications, Computer Graphics, SIGGRAPH, research" />
<meta name="description" content="Publication List for Matthew Fisher" />
<link rel="stylesheet" type="text/css" href="default.css" />
</head>
<body>

<div id="upbg"></div>

<div id="outer">


	<div id="header">
		<div id="headercontent">
			<h1><font face="georgia">Matt's Webcorner</font></h1>
			<h2>Stanford 2014</h2>
		</div>
	</div>

	<div id="menu">
		<ul>
			<li><a href="index.html" >Home</a></li>
			<li><a href="projects.html" >Projects</a></li>
			<li><a href="publications.html" class="active">Publications</a></li>
			<li><a href="recipes.html" >Recipes</a></li>
			<li><a href="contact.html" >Contact</a></li>
		</ul>
	</div>
	<div id="menubottom"></div>

	
	<div id="content">
<div id="normalcontent">

<div id="mainD">
<div id="contentD">
<div id="headerD">
<h1>First-class Runtime Generation of High-performance Types using Exotypes</h1>
<div id="authorsD">
<span>
<a href="https://github.com/zdevito">Zachery DeVito</a>
</span>
<span>
<a href="http://www.stanford.edu/~dritchie/index.html">Daniel Ritchie</a>
</span>
<span>
<a href="http://graphics.stanford.edu/~mdfisher/publications.html">Matthew Fisher</a>
</span>
<span>
<a href="http://theory.stanford.edu/~aiken/">Alex Aiken</a>
</span>
<span>
<a href="http://graphics.stanford.edu/~hanrahan/">Pat Hanrahan</a>
</span>
</div>
<div id="affiliationsD">
<span>
Stanford University
</span>
</div>
<div id="centerpieceD">
<img id="teaserD" src="papers/exotypesTeaser.png"/>
<span>Programming Language Design and Implementation 2014</span>
</div>
<div id="gutsD">
<div id="abstractD">
<h2>Abstract</h2>
<br/>
<p>
We introduce exotypes, user-defined types that combine the flexibility
of meta-object protocols in dynamically-typed languages with
the performance control of low-level languages. Like objects in dynamic
languages, exotypes are defined programmatically at runtime,
allowing behavior based on external data such as a database
schema. To achieve high performance, we use staged programming
to define the behavior of an exotype during a runtime compilation
step and implement exotypes in Terra, a low-level staged programming
language.
We show how exotype constructors compose, and use exotypes
to implement high-performance libraries for serialization, dynamic
assembly, automatic differentiation, and probabilistic programming.
Each exotype achieves expressiveness similar to libraries
written in dynamically-typed languages but implements optimizations
that exceed the performance of existing libraries written in
low-level statically-typed languages. Though each implementation
is significantly shorter, our serialization library is 11 times faster
than Kryo, and our dynamic assembler is 3 to 20 times faster than
Google's Chrome assembler.
</p>
</div>
<div id="extrasD">
<h2>Extras</h2>
<br/>
<p class="item">
Paper: <a href="papers/exotypes.pdf"><img src="Images/pdf-icon.png"/>PDF</a>
</p>
<div class="item">
BibTeX citation:
<div class="bibtexD">
To be published in the proceedings of PLDI 2014
<br/>
</div>
</div>
</div>
<div id="clearfloatsD"></div>
</div>
</div>
</div>
	</div>

	<div id="footer">
			<div class="left">&copy; 2014 Matthew Fisher. All rights reserved.</div>
			<div class="right"><a href="http://www.nodethirtythree.com/">NodeThirtyThree Design</a></div>
	</div>
	
</div>

</body>
</html>

